package controller

import (
	"bubble1/models"
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
url --> controller --> logic --> model
请求来了 --> 控制器 --> 业务逻辑 --> 模型层增删改查
*/

func IndexHander(c *gin.Context)  {
	c.HTML(http.StatusOK, "index.html", nil)
}

func CreateATodo(c *gin.Context)  {
	// 前端页面填写代办事项，点击提交，发送数据到这里
	// 1.从请求中把数据拿出来
	var todo models.Todo
	// 接收数据
	c.BindJSON(&todo)
	// 2.存入数据库 返回响应
	err := models.CreateATodo(&todo)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todo)
	}
}

func GetTodoList(c *gin.Context)  {
	// 查询所有数据
	todoList, err := models.GetAllTodo()
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todoList)
	}
}

func UpdateATodo(c *gin.Context)  {
	// 接收判断参数
	id, ok := c.Params.Get("id")
	if !ok {
		c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
		return
	}
	// 查询数据是否存在
	todo, err := models.GetATodo(id)
	if err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
		return
	}
	// 更新
	c.BindJSON(&todo)
	if err := models.UpdateATodo(todo); err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, todo)
	}

}

func DeleteATodo(c *gin.Context) {
	// 接收判断参数
	id, ok := c.Params.Get("id")
	if !ok {
		c.JSON(http.StatusOK, gin.H{"error": "无效的id"})
		return
	}
	if err := models.DeleteATodo(id); err != nil {
		c.JSON(http.StatusOK, gin.H{"error": err.Error()})
	} else {
		c.JSON(http.StatusOK, gin.H{id:"删除成功"})
	}
}
